#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/dnn/dnn.hpp>
using namespace std;

class ONNXClassifier
{
public:
	ONNXClassifier(const string &model_path, const string &label_path, cv::Size _input_size); //构造函数，同时会调用读取文本方法
	void Classify(const cv::Mat &input_image, string &out_name);							  //图像识别分类方法（其中调用了图像预处理方法）
private:
	void preprocess_input(cv::Mat &image);		//输入图像预处理方法
	bool read_labels(const string &label_path); //读取文本文件中的label标签方法
private:
	cv::Size input_size;	 //存储输入图像尺寸的成员变量
	cv::dnn::Net net;		 //存储神经网络模型的成员变量
	cv::Scalar default_mean; //存储减法函数substract中减数Scalar的成员变量
	cv::Scalar default_std;	 //存储除法函数divide中除数Scalar的成员变量
	vector<string> labels;	 //存储labels标签的成员数组变量
};